home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / BCCGRX12.ZIP / contrib / bcc2grx / src / bccgrx21.c < prev    next >
C/C++ Source or Header  |  1993-06-04  |  2KB  |  84 lines

  1. /*
  2.  *  BCC2GRX  -  Interfacing Borland based graphics programs to LIBGRX
  3.  *  Copyright (C) 1993  Hartmut Schirmer
  4.  *
  5.  *  see bccgrx.c for details
  6.  */
  7.  
  8. #include "bccgrx00.h"
  9.  
  10. void set_BGI_mode(int *graphdriver, int *graphmode)
  11. {
  12.   int rx = 0;
  13.   int ry = 0;
  14.   int rc = 0;
  15.  
  16.   switch (*graphdriver) {
  17.     case VGA     : switch (*graphmode) {
  18.              case VGALO : rx = 640; ry = 200; rc = 16; break;
  19.              case VGAMED: rx = 640; ry = 350; rc = 16; break;
  20.              case VGAHI : rx = 640; ry = 480; rc = 16; break;
  21.            }
  22.            break;
  23.     case IBM8514 : switch (*graphmode) {
  24.              case IBM8514LO: rx =  640; ry = 480; rc = 256; break;
  25.              case IBM8514HI: rx = 1024; ry = 768; rc = 256; break;
  26.            }
  27.            break;
  28.     case HERCMONO: if (*graphmode == HERCMONOHI) {
  29.              rx = 720;
  30.              ry = ((__gr_ADAPTER == GR_HERC) ? 348 : 350);
  31.              rc = ((__gr_ADAPTER == GR_HERC) ?   2 :  16);
  32.            }
  33.            break;
  34.     case CGA     :
  35.     case MCGA    :
  36.     case ATT400  : switch (*graphmode) {
  37.              case CGAC0 :
  38.              case CGAC1 :
  39.              case CGAC2 :
  40.              case CGAC3 : rx = 320; ry = 200; rc = 16;/*?*/  break;
  41.              case CGAHI : /* == MCGAMED == ATT400MED */
  42.                   rx = 640; ry = 200; rc = 2;        break;
  43.              case MCGAHI: /* == ATT400HI */
  44.                   switch (*graphdriver) {
  45.                     case MCGA  : rx = 640; ry = 480;
  46.                          rc = 2;             break;
  47.                     case ATT400: rx = 640; ry = 400;
  48.                          rc = 2;             break;
  49.                   }
  50.                   break;
  51.            }
  52.            break;
  53.     case EGA64   : switch (*graphmode) {
  54.              case EGA64LO : rx = 640; ry = 200; rc = 16;     break;
  55.              case EGA64HI : rx = 640; ry = 350; rc =  4;     break;
  56.            }
  57.            break;
  58.     case EGA     : switch (*graphmode) {
  59.              case EGALO : rx = 640; ry = 200; rc = 16;       break;
  60.              case EGAHI : rx = 640; ry = 350; rc = 16;       break;
  61.            }
  62.            break;
  63.     case EGAMONO : if (*graphmode == EGAMONOHI) {
  64.              rx = 640; ry = 350; rc = 16;
  65.            }
  66.            break;
  67.     case PC3270  : if (*graphmode == PC3270HI) {
  68.              rx = 720; ry = 350; rc = 16;
  69.            }
  70.            break;
  71.     default      : ERR = grInvalidDriver;
  72.            return;
  73.   }
  74.  
  75.   if (rc != 0) {
  76.     __gr_BGI_w = rx;
  77.     __gr_BGI_h = ry;
  78.     __gr_BGI_c = rc;
  79.     *graphdriver = NATIVE_GRX;
  80.     *graphmode   = GRX_BGI_EMULATION;
  81.   } else
  82.     ERR = grInvalidMode;
  83. }
  84.